#ifndef SHADER_HPP_
# define SHADER_HPP_

# include <glew.h>
# include <GL/GL.h>
# include "Mat.hpp"

class		Shader
{
public:
	GLuint		_programId;
	GLuint		_vertexId;
	GLuint		_fragmentId;

	void		use();
	void		disable();

	void		sendUniformData(const char* varName, float value);
	void		sendUniformData(const char* varName, float v1, float v2);
	void		sendUniformData(const char* varName, float v1, float v2, float v3);
	void		sendUniformData(const char* varName, float v1, float v2, float v3, float v4);
	void		sendUniformData(const char* varName, Vec3f const& vec);
	void		sendUniformData(const char* varName, Vec4f const& vec);
	void		sendUniformData(const char* varName, Mat3f const& mat);
	void		sendUniformData(const char* varName, Mat4f const& mat);

	void		bindAttribLocation(const int index, const char* name);
	int			getAttribLocation(const char* name);
};

#endif // !SHADER_HPP_
